Communication technologies that link multiple agents within or across integrated circuits are varied. A popular class of such technology is the PCI family, including the original PCI (Peripheral Component Interconnect), PCI-X, PCI-Express as well as the related HyperTransport and RapidIO. These technologies define protocols used for inter-chip communication. However, derivatives of these technologies are also used inside integrated circuits to link multiple agents. While there is no industry standard for these PCI-derived internal protocols, many companies used such protocols based on one or more of the PCI family technologies mentioned above.
Internal PCI-based protocols compete with a variety of other internal communication protocols including the AMBA (Advanced Microcontroller Bus Architecture) AXI (Advanced eXtensible Interface) and OCP (Open Core Protocol) standards. The PCI-based protocols differ from most of the other protocols in their ordering scheme and the constraints this scheme places on the behavior and topology of the fabric connecting the various agents. More specifically, fabrics supporting PCI ordering rely on three closely tied networks (Non-Posted, Completion, Posted) where specific inter-network ordering rules must be maintained. In addition, the topology of the fabric is constrained to be a tree. On the other hand, other protocols (like the aforementioned AXI and OCP) rely on independent networks where there is no ordering constraint between networks) and the fabric topology is not limited to a tree.
Because the use of PCI-family inter-chip protocols is pervasive, many agents (like switches, host bridges and host controllers for a variety of I/O protocols like Ethernet, USB, SATA) have been created to support the PCI-family protocols, and, more importantly, are based on PCI ordering. With progress in chip technology, many of these agents can be fitted on a single integrated circuit. To connect these agents inside the integrated circuit, the simplest method is to use an internal PCI-based protocol so that the agent can be reused without much modification. However, this means that the fabric required to connect these agents is complex and is costly to implement, especially when a large number of agents must be connected.
In prior art example of FIG. 1, a system 100 includes typical PCI-ordered agents 12 and a PCI-ordered fabric 14 connecting the agents 12. The PCI-ordered agents 12 connect through three networks: Non-posted 16a, Completion 16b, and Posted 16c. The Non-Posted (NP) network 16a is typically used to send read requests, but it may also carry less-common non-posted write requests and other types of requests. The Completion (CPL) network 16b is used to carry completion transactions corresponding to the requests placed on the NP network 16a. The Posted (PST) network 16c is typically used to send posted write requests, which do not require a completion, but it may also carry other types of requests like interrupt requests or messages.
The agents 12 have both inbound and outbound connections to the three networks, so there is a total of 6 ports for each agent 12. The agents 12 may have less than 6 ports if they don't need all types of transaction, for instance if they are master-only or slave-only. The 6 ports and the corresponding wires and ports in the fabric 14 may be partially or fully multiplexed on a set of physical wires. Each port may be implemented using more than one sub-port with separate flow control. Such an example would be to have separate command and data sub-ports with separate flow control. Depending on the connectivity of the fabric 14, each network may consist of one or more disconnected segments. In the example of FIG. 1, the fabric 14 allows full connectivity between all the agents, so each network is composed of a single segment. The fabric 14 can be implemented in many ways, including one or more cascaded switches. In the general case, its topology is a tree.
In some cases, the agents 12 have multiple copies of some of the ports, usually for quality-of-service or priority reasons. These copies may be physically independent, or multiplexed on a shared set of wires using independent flow control. In many PCI-family protocols, this is referred to as virtual channels.
Referring now to FIG. 2, a topology 20 is shown as another example. This topology includes a single 3-way switch 26, which is allowed for a PCI-ordered fabric, which connects three agents 22.
In some cases, PCI-ordered agents must be connected to a non-PCI ordered fabric. This is the case when an existing integrated circuit does not use a PCI-ordered fabric, but an agent that was originally created for a PCI-based fabric must be added. One common example is the addition of a PCI-Express root complex to an integrated circuit to support external PCI-Express agents. The PCI-Express root complex is naturally PCI ordered. Its connection to a non-PCI-ordered fabric can be done with a bridge. However, because of the difference in ordering requirements, the performance of this bridge may not be satisfactory. In addition, a number of deadlock cases may be introduced, especially if several such PCI-ordered clients are put on a non-PCI-ordered fabric and they are allowed to communicate with each other.
A prior art fabric 14 must enforce PCI ordering rules between the three networks (NP, CPL and PST). This requires the networks to be routed close to each other (or on the same wires) and then to use additional logic and buffering to keep track of the arrival order on the various networks and potentially buffer transactions when they may not progress through their network because of ordering constraints. This additional logic and buffering adds to the area and power of the fabric, increases the complexity of the fabric and potentially reduces the maximum clock frequency the fabric may run at. In addition, the topology of the fabric is usually limited to a tree, which may increase the total wire count and latency between agents. Therefore, what is needed is a system and method that overcome these problems by allowing the 3 networks to be handled independently in the fabric and making any topology possible.